package com.ffs.game.scene.obj.ai;

import com.badlogic.gdx.Screen;
import com.ffs.game.scene.GameScene;
import com.ffs.game.scene.obj.Monster;

/**
 * 怪物AI
 *
 * @author ffs80
 */
public interface IMonsterAI {

    /**
     * 进入巡逻状态
     *
     * @param screen  场景
     * @param monster 怪物
     */
    void activeEnter(GameScene screen, Monster monster);

    /**
     * 退出巡逻状态
     *
     * @param screen  场景
     * @param monster 怪物
     */
    void activeExit(GameScene screen, Monster monster);

    /**
     * 巡逻状态更新
     *
     * @param screen  场景
     * @param monster 怪物
     * @param dt      步长
     */
    void activeUpdate(GameScene screen, Monster monster, int dt);

    /**
     * 进入战斗状态
     *
     * @param screen  场景
     * @param monster 怪物
     */
    void fightEnter(GameScene screen, Monster monster);

    /**
     * 退出战斗状态
     */
    void fightExit(GameScene screen, Monster monster);

    /**
     * 战斗状态更新
     */
    void fightUpdate(GameScene screen, Monster monster, int dt);

    /**
     * 进入死亡状态
     */
    void dieEnter(GameScene screen, Monster monster);

    /**
     * 退出死亡状态
     */
    void dieExit(GameScene screen, Monster monster);

    /**
     * 死亡状态更新
     */
    void dieUpdate(GameScene screen, Monster monster, int dt);

    void bornEnter(GameScene screen, Monster monster);

    void bornExit(GameScene screen, Monster monster);

    void bornUpdate(GameScene screen, Monster monster, int dt);
}
